جلسه 37
رباتیک والکترونیک روبواچ پیRoboHp
رباتیک والکترونیک

به نام خدا
با عرض سلام خدمت دوستان عزيزم
در اين جلسه، با توضيح در مورد نحوه‌ي انجام تنظيمات اوليه در CodeWizard، مطلب راه اندازي موتورهاي ربات به كمك PWM را تكميل خواهيم كرد.
همانطور كه در جلسه‌ي پيش هم متذكر شديم، در اينجا مجال نيست تا تمام مباحث مربوط به PWM و تايمرها را باز كنيم و مفصل به آن‌ها بپردازيم، به همين خاطر در اين جلسه قسمتي از تنظيمات در CodeWizard را بدون توضيح آموزش مي‌دهيم.
براي انجام تنظيمات به كمك CodeWizard، ابتدا بايد طبق روندي كه در جلسه‌ي 26 توضيح داده شد، يك پروژه‌ي جديد در CodeVision بسازيد.
پس از انجام تنظيمات ساير لبه‌ها (مانند Ports، Chip و .... ) در CodeWizard، لبه‌ي Timers را باز كنيد.
 همانطور كه مي‌بينيد ميكروكنترلر ATmega16 داراي 3 تايمر مجزا است و ما براي توليد PWM بايد از اين تايمرها استفاده كنيم. تايمر‌ها كاربرد‌ها‌ي متعددي دارند، و يكي از مهم‌ترين مباحث در ميكروكنترلر هستند، ما هم  در مورد تايمر‌ها در جلسات آينده مفصل توضيح خواهيم داد. اما در اين جلسه فقط استفاده از تايمر‌ها را براي ايجاد PWM براي كنترل موتور‌هاي ربات استفاده مي‌كنيم.


Timer0
 




Timer0 مربوط به رجيستر OCR0 است و بايد به شكل زير تنظيم شود.

نكته‌اي كه در مورد تنظيم هر 3 تايمر بايد رعايت شود، اين است كه در بخش "Clock Value" بايد پايين‌ترين فركانس را انتخاب كنيد. در اين مورد توضيح مختصري مي‌دهم، ولي اگر عزيزان اين بند را متوجه نشوند اهميت زيادي ندارد: اندازه‌ي فركانسي  كه انتخاب مي‌كنيد در اين بخش، در حكم اندازه‌ي همان Delayهايي است كه براي توليد PWM به صورت عادي (كه در ابتداي جلسه‌ي قبل توضيح داديم) استفاده مي‌كنيم. يعني در حقيقت طول موج را در نمودار ولتاژ بر زمان تعيين مي‌كند. هر چه فركانس بالاتري را انتخاب كنيد، طول موج كمتر مي‌شود. در عمل ديده شده كه هر چه فركانس پايين‌تر باشد و در نتيجه طول موج بيشتر باشد، موتور‌ها بهتر هدايت مي‌شوند. به همين خاطر در بالا گفته شد كه دوستان پايين‌ترين فركانس را براي "Clock Value" انتخاب كنند.


Timer1
 




تايمر1 بايد به شكل زير تنظيم شود. دقت كنيد كه ممكن است در بخش Clock Value شما فركانسي كه در شكل زير نمايش داده شده است را در گزينه‌ها نداشته باشيد، ولي همانطور كه گفته شد فقط مهم اين است كه شما پايين‌ترين فركانس را انتخاب كنيد.


همانطور كه مي‌بينيد، تايمر1 داراي دو خروجي مجزا است كه رجيستر‌هاي مربوط به آن‌ها OCR1AL و OCR1BL هستند.


Timer2
 




تايمر2 ميز به شكل زير تنظيم مي‌شود و مانند تايمر0 فقط يك خروجي دارد.

 

Watchdog
 



 يا سگ نگهبان نيز يكي از مباحث مربوط به تايمر‌هاست كه در جلسات آينده به آن خواهيم پرداخت.

حال كه همه‌ي تنظيمات لازم را در CodeWizard انجام داده‌ايد، "Generate, Save and Exit" انتخاب كنيد و وارد فضاي برنامه نويسي شويد.

نكته‌ي بسيار مهم:
براي كنترل هر موتور، علاوه بر يك پايه‌ي
PWM، يك خروجي معمولي نيز لازم داريم تا بتوانيم به وسيله‌ي اين دو پايه و به كمك درايور موتور، اختلاف پتانسيل مورد نظر را بر روي دو پايه‌ي موتور برقرار كنيم. اين 2 پايه را به دو پايه‌ي ورودي L298 متصل مي‌كنيم و دو پايه‌ي موتور را نيز، به دو پايه‌ي خروجي  L298 متصل مي‌كنيم. حال مي‌توانيم موتور را به وسيله‌ي ميكروكنترلر با سرعت دلخواه كنترل كنيم. به عنوان مثال اگر بخواهيم موتور ما تقريباً با سرعت نصف بچرخد، و پايه‌هاي PD.6 و PD.7 (مربوط به رجيستر OCR2) را به L298
متصل كرده باشيم،برنامه‌ي زير را بايد بنويسيم:

OCR2=127;
PORTD.6=0;


و اگر بخواهيم موتور ما با همين سرعت و در جهت معكوس بچرخد، مي‌نويسيم:

OCR2=127;
PORTD.6=1;




براي درك اين موضوع دقت كنيد كه در اين حالت چه ولتاژي توسط L298 بر روي موتورها قرار داده مي‌شود. همانطور كه مي‌دانيد، سرعت و جهت چرخش موتور وابسته به اختلاف ولتاژي است كه بر روي پايه‌هاي موتور قرار داده مي‌شود.


تا به اينجا مباحث پايه‌اي در ميكروكنترلر‌هاي AVR مطرح شده است و همين آموخته‌هاي دوستان، نياز‌هاي اوليه‌ي شما عزيزان را براي ساخت ربات‌هاي نسبتاً حرفه‌اي برطرف مي‌سازد.
از اين به بعد، مطالب به با دامنه‌ي گسترده‌تري پيرامون ساير مباحث مربوط به رباتيك،ارائه خواهد شد. در هر جلسه مطلب جديدي را مطرح كرده و در مورد آن توضيح مي‌دهيم و ديگر مطالب به شكل كنوني به صورت زنجيره‌وار و وابسته به هم، نخواهند بود.
 طبيعتاً براي درك هر مطلبي نياز به مقدمات و پيش‌نيازهايي است، كه در ابتداي هر جلسه  پيش نياز‌هاي مطالبي كه در ان جلسه قرار است مطرح شوند، ذكر خواهد شد، تا به اين ترتيب پراكندگي مطالب، دوستان را دچار سر در گمي نكند.

مجدداً از دوستان عزيزي كه مخاطب اين بخش هستند و مطالب را با ما دنبال مي‌كنند، تقاضا مي‌شود هر پيشنهاد و انتقادي براي ارتقا سطح كيفي اين بخش دارند، با ما در ميان بگذارند.

تا جلسه‌ي آينده خدا نگه‌دار.


نظرات شما عزیزان:

س
ساعت0:12---7 شهريور 1393
باسلام وخسته نباشید

سوالی دارم که ممنون میشوم سریع جواب دهید -اگر خروجیهای موتور در ربات مسیریاب رو به پایه های oc1 ,oc2 میکروatmega32 وصل نکرده باشیم آیا میشه با پورتهای دیگه میکرو پالس pwm تولید کرد؟(برای برنامه نویسی از کدویژن استفاده کردم)-برای جواب خیلی عجله دارم
پاسخ:بله میشه ولی بابرنامه نویسی خیلی سخت


نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:







درباره سایت


به فروشگاه رباتیک والکترونیک RoboHpخوش آمدید
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان فروشگاه رباتیک و آدرس robohp.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.





نويسندگان


ورود اعضا:

نام :
وب :
پیام :
2+2=:
(Refresh)

خبرنامه وب سایت:





آمار وب سایت:  

بازدید امروز : 144
بازدید دیروز : 0
بازدید هفته : 145
بازدید ماه : 546
بازدید کل : 130898
تعداد مطالب : 164
تعداد نظرات : 20
تعداد آنلاین : 1


IS
Google

در اين سایت
در كل اينترنت

تولید ملی حمایت از کار و سرمایه ایرانی